01e38d
@@ -22,13 +22,6 @@
 
 package org.jboss.metadata.ejb.parser.spec;
 
-import java.time.ZonedDateTime;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-
 import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
 import org.jboss.metadata.ejb.spec.ScheduleMetaData;
 import org.jboss.metadata.ejb.spec.TimerMetaData;
@@ -37,6 +30,18 @@
import org.jboss.metadata.parser.ee.Accessor;
 import org.jboss.metadata.parser.ee.DescriptionGroupMetaDataParser;
 import org.jboss.metadata.property.PropertyReplacer;
 
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAccessor;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+
+import static java.time.temporal.ChronoField.OFFSET_SECONDS;
+
 /**
  * Parses and creates metadata out of &lt;timer&gt; element in ejb-jar.xml
  * <p/>
@@ -60,6 +65,18 @@
public class TimerMetaDataParser extends AbstractMetaDataParser<TimerMetaData> {
         return timerMetaData;
     }
 
+    private static Calendar parseDateTime(String dateTime) {
+        final TemporalAccessor ta = DateTimeFormatter.ISO_DATE_TIME.parse(dateTime);
+        final LocalDateTime localDateTime = LocalDateTime.from(ta);
+        final ZoneId zoneId;
+        if (ta.isSupported(OFFSET_SECONDS)) {
+            zoneId = ZoneId.from(ta);
+        } else {
+            zoneId = ZoneId.systemDefault();
+        }
+        return GregorianCalendar.from(ZonedDateTime.of(localDateTime, zoneId));
+    }
+
     /**
      * Parses the child elements of the &lt;timer&gt; element and updates the passed {@link TimerMetaData} accordingly.
      *
@@ -126,7 +143,4 @@
public class TimerMetaDataParser extends AbstractMetaDataParser<TimerMetaData> {
 
         }
     }
-    private static Calendar parseDateTime(String dateTime) {
-        return GregorianCalendar.from(ZonedDateTime.parse(dateTime));
-    }
 }
